package com.example.bishe.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.bishe.entity.Room;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.bishe.entity.User;
import com.example.bishe.entity.UserRoom;
import com.example.bishe.web.b.vo.getRoomPageVO;

import java.util.List;

/**
 * <p>
 *  空间服务类
 * </p>
 *
 * @author LDH
 * @since 2022/11/30
 */
public interface RoomService extends IService<Room> {

    /**
    * @Description: 空间分页查询
    *
    * @Author: LDH
    * @Date: 2023/02/05
    */
    IPage<getRoomPageVO> roomPage(int pageNum, int pageSize, String name, String startTime, String endTime,
                                  String state, String type, String userName,
                                  Integer userMIN, Integer userMAX);

    /**
    * 功能描述: 批量删除空间
    *
    * @Author: LDH
    * @Date: 2023/05/08
    */
    void delBatch(List<Room> rooms);

    /**
    * @Description: 空间启用
    *
    * @Author: LDH
    * @Date: 2023/02/05
    */
    void setON(Long id);

    /**
    * @Description: 空间禁用
    *
    * @Author: LDH
    * @Date: 2023/02/05
    */
    void setOFF(Long id);

    /**
    * @Description: 删除空间
    *
    * @Author: LDH
    * @Date: 2023/02/05
    */
    void deleteOne(Long id);

    /**
    * 功能描述: c端分页查询个人空间
    *
    * @Author: LDH
    * @Date: 2023/03/20
    */
    IPage<Room> getCRoomPage(int pageNum, int pageSize, Long userId, String title);

    /**
    * 功能描述: 查询空间内成员
    *
    * @Author: LDH
    * @Date: 2023/04/23
    */
    IPage<User> getUserOfRoom(int pageNum, int pageSize, Long roomId);

    /**
    * 功能描述: 用户创建互联空间
    *
    * @Author: LDH
    * @Date: 2023/04/23
    */
    int add(Room room);

    /**
    * 功能描述: 用户加入互联空间
    *
    * @Author: LDH
    * @Date: 2023/04/23
    */
    int join(UserRoom userRoom);

    /**
    * 功能描述: 用户退出、解散空间
    *
    * @Author: LDH
    * @Date: 2023/04/27
    */
    void delete(UserRoom userRoom);
}
